package com.ranjiaqi.lambda;

import com.ranjiaqi.pojo.Person;

import java.util.Set;
import java.util.TreeSet;

/**
 * @ClassName TestLambda03
 * @Description TODO
 * @Author hp
 * @Date 2021/7/5 15:11
 * @Version 1.0
 **/

/**
 * Lambda省略规则:可推导可省略
 * lambda取代了匿名内部类，实现了接口
 * 比较器接口是对集合服务的，集合中的泛型已经确定是Person类型
 * 比较器接口，比较的类型也是Person，可以省略
 * lambda方法体，只有一行代码{}可省略
 * 方法只有一行代码，returen可以不写省略
 *
 *
 * 方法的参数是无参数，直接写()->{}
 * 方法的参数只有一个，直接写变量名即可 s->{}小括号也可以省略
 */
public class TestLambda03 {
    public static void main(String[] args) {
        Set<Person> people = new TreeSet<>( ( p1,  p2)->
             p1.getAge() - p2.getAge()
       );

        people.add(new Person("张三", 20));
        people.add(new Person("李四", 20));
        people.add(new Person("王五", 20));
        people.add(new Person("赵六", 20));
        people.add(new Person("张三", 18));

        System.out.println(people);
    }
}
